import build_task
import compute_multi_task
import pandas as pd
import numpy as np


# 设置随机种子
np.random.seed(0)

# 读数据

flt_data = pd.read_excel(".\\data\\航班数据.xlsx") # 航班计划表
flt_layout = pd.read_excel(".\\data\\舱位布局.xlsx", index_col="type")  # 机舱布局，用以计算乘客人数
flt_run_time = pd.read_excel(".\\data\\机坪运行时间.xlsx", "机坪运行时间", header= 1) # 机坪运行时间

# 处理数据：
# 飞机布局：
flt_layout.fillna(0, inplace=True)
flt_layout = flt_layout.T.to_dict() # 生成机舱布局字典
# print(flt_layout)

# 机坪运行时间：
flt_run_time.index = flt_run_time["gate"] # 生成机坪转移时间矩阵


# 航班计划表
flt_data["进出港类型"]= flt_data["进出港类型"].apply(lambda x: 1 if x == "进港" else 0) # 进出港替换为1,0
# flt_data.index = flt_data["航班日期"].map(str) + "_" + flt_data["航班号"]

flt_data_dict = flt_data.T.to_dict() # 航班信息转dict

if __name__ == "__main__":

    # 根据航班数据生成任务数据
    total_task = build_task.build_task(flt_data_dict, flt_layout, flt_run_time)
    x = pd.DataFrame(total_task).sort_values(by='ready_time')
    # 生成任务并，输出到csv
    x.to_csv(r"data\total_tasks.csv")

    #计算各时段内最大并行任务数目
    compute_multi_task.compute_max_multi_task(x)
    print("="*20 + "任务生成完毕" + "="*20)